perm filename AIRPO5.AX[W81,JMC] blob sn#557652 filedate 1981-01-22 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	% Handles non-situation-dependent at more better than previous versions.
C00006 ENDMK
C⊗;
% Handles non-situation-dependent at more better than previous versions.

% Contains additional declarations and axioms for reifying actions.

declare INDVAR x y z s p a1 a2;

declare INDCONST I, S0, desk, home,car,airport,county;

declare PREDCONST at 3, att 2, walkable 1, drivable 1;

declare OPCONST walk 2, drive 2, result 3, prog 2, walka 1, drivea 1;

axiom walkable:	walkable(home);;

axiom drivable:	drivable(county);;

axiom at:
	at(I,desk,S0)
	att(desk,home)
	at(car,home,S0)
	att(home,county)
	att(airport,county)
;;

axiom ats:	∀x y.(att(x,y) ⊃ ∀s.at(x,y,s));;

axiom attrans:
	∀x y z s.(at(x,y,s) ∧ at(y,z,s) ⊃ at(x,z,s))
	∀x y z.(att(x,y) ∧ att(y,z) ⊃ att(x,z))
;;

axiom walk:
	∀x y z s.((walkable(x) ∧ (att(y,x)∨at(y,x,s)) ∧ (att(z,x)∨at(z,x,s))
			 ∧ at(I,y,s))
		⊃ (at(I,z,walk(z,s))
		   ∧ ∀x y.(¬(x = I) ⊃ (at(x,y,walk(z,s)) ≡ at(x,y,s)))))
;;

axiom drive:
	∀x y z s.((drivable(x) ∧ att(y,x) 
				∧ att(z,x) ∧ at(car,y,s) ∧ at(I,car,s))
		⊃ (at(car,z,drive(z,s))
			∧ ∀x y.(¬(x = car ∨ at(x,car,s)) ∨ y=car
					 ⊃ (at(x,y,drive(z,s)) ≡ at(x,y,s)))))
;;

axiom notI:	¬(I=desk) ∧ ¬(I=car) ∧ ¬(I=home) ∧ ¬(I=airport);;

axiom walka:
	∀x y z p s.((walkable(x) ∧ (att(y,x)∨at(y,x,s)) ∧ (att(z,x)∨at(z,x,s))
			 ∧ at(p,y,s))
		⊃ (at(p,z,result(p,walka(z),s))
		   ∧ ∀x y.(¬(x = I) ⊃ (at(x,y,result(p,walka(z),s)) ≡ at(x,y,s)))))
;;

axiom drivea:
	∀x y z p s.((drivable(x) ∧ att(y,x) 
				∧ att(z,x) ∧ at(car,y,s) ∧ at(p,car,s))
		⊃ (at(car,z,result(p,drivea(z),s))
		∧ ∀x y.(¬(x = car ∨ at(x,car,s)) ∨ y=car
			 ⊃ (at(x,y,result(p,drivea(z),s)) ≡ at(x,y,s)))))
;;

axiom prog:
	∀a1 a2 p s.(result(p,prog(a1,a2),s) = result(p,a2,result(p,a1,s)))
;;

% The next two axioms make axioms  walk  and  drive  redundant.

axiom walkb:
	∀x s.(walk(x,s) = result(I,walka(x),s))
;;

axiom driveb:
	∀x s.(drive(x,s) = result(I,drivea(x),s))
;;